package www.bancodelanacion.intranet.prestamos.controlador;

import java.io.IOException;
import java.sql.SQLException;
import java.util.ArrayList;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import www.bancodelanacion.intranet.prestamos.entidad.ClienteDTO;
import www.bancodelanacion.intranet.prestamos.entidad.RefinanciamientoDTO;
import www.bancodelanacion.intranet.prestamos.service.ClienteService;
import www.bancodelanacion.intranet.prestamos.service.ClienteServiceImpl;
import www.bancodelanacion.intranet.prestamos.service.RefinanciamientoServiceImpl;


/**
 * Servlet implementation class servletCliente
 */
public class servletCliente extends HttpServlet {
	private static final long serialVersionUID = 1L;
	
	protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		String metodo = request.getParameter("metodo");
		if (metodo.equals("inserta")) {
			inserta(request, response);
			lista(request, response);
		} else if (metodo.equals("eliminar")) {
			elimina(request, response);
			lista(request, response);
		} else if (metodo.equals("actualiza")) {
			actualiza(request, response);
			lista(request, response);
		} else if (metodo.equals("lista")) {
			lista(request, response);
		} else if (metodo.equals("buscar")) {
			buscar(request, response);
		}else if (metodo.equals("obtener")) {
			obtenerCliente(request, response);
		}
	}
	ClienteService servicio = new ClienteServiceImpl();
	protected void inserta(HttpServletRequest request,
			HttpServletResponse response) throws ServletException, IOException {
		//inserta
		String razon=request.getParameter("txtrazon");
		
		String ruc=request.getParameter("txtruc");
		String mensaje="";
		try {
			System.out.println("entrainsertar");
			boolean flag=false;
			flag=servicio.buscaDuplicado(razon, ruc);
			String codigo=servicio.codigogen();
			System.out.println(codigo);
			
			ClienteDTO p = new  ClienteDTO();
			
			p.setCodigocliente(codigo);
			p.setRazonsocial(request.getParameter("txtrazon"));
			p.setDireccion(request.getParameter("txtdireccion"));
			p.setRuc(request.getParameter("txtruc"));
			p.setFax(request.getParameter("txtfax"));
			p.setPaginaweb(request.getParameter("txtweb"));
			p.setCorreo(request.getParameter("txtcorreo"));
			
			
			if(flag==false){
				servicio.insertaCliente(p);
				
			}else{
				mensaje="este razon social o ruc ya han sido registrados";
				request.setAttribute("ERROR_INSERTAR", mensaje);	
			}
			
		} catch (SQLException e) {
			e.printStackTrace();
		}
		
	}

	protected void elimina(HttpServletRequest request,
			HttpServletResponse response) throws ServletException, IOException {
		try {
			System.out.println("entro servlet metodo eliminar");
			String codigo = request.getParameter("id");
			servicio.eliminaCliente(codigo);
			System.out.println("termino servlet metodo elimimar");
		} catch (SQLException e) {
			e.printStackTrace();
		}
	}

	protected void actualiza(HttpServletRequest request,
			HttpServletResponse response) throws ServletException, IOException {
		try {
			ClienteDTO p = new  ClienteDTO();
			p.setCodigocliente(request.getParameter("txtcodigo"));
			p.setRazonsocial(request.getParameter("txtrazon"));
			p.setDireccion(request.getParameter("txtdireccion"));
			p.setRuc(request.getParameter("txtruc"));
			p.setFax(request.getParameter("txtfax"));
			p.setPaginaweb(request.getParameter("txtweb"));
			p.setCorreo(request.getParameter("txtcorreo"));
			
			servicio.actualizaCliente(p);
		} catch (SQLException e) {
			e.printStackTrace();
		}
	}

	protected void lista(HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException {
		ArrayList<ClienteDTO> lista2 = null;
		try {
			lista2 = servicio.listarCliente();
			System.out.println("termino lista");
		} catch (SQLException e) {
			// TODO: handle exception
		}
		
		//para que pueda paginar se gurada en una sesion la lista
		request.getSession().setAttribute("clientes", lista2);
		request.getRequestDispatcher("/MantenerCliente.jsp").forward(request,
				response);
		System.out.println("mando lista");
	}

	protected void buscar(HttpServletRequest request,
			HttpServletResponse response) throws ServletException, IOException {
		ClienteDTO dto=null;
		try {
			String id =request.getParameter("id");
			System.out.println("llego parametro "+id);
			dto = servicio.buscaCliente(id);
			request.setAttribute("cli", dto);
			System.out.println("encontro bean "+dto.getCodigocliente());
			
			request.getRequestDispatcher("/actualizarCliente.jsp").forward(request,response);        
//			request.getRequestDispatcher("/MantenerCliente.jsp").forward(request,response);   
		} catch (SQLException e) {
			e.printStackTrace();
		}
	}
	
	protected void buscarCliente(HttpServletRequest request,
			HttpServletResponse response) throws ServletException, IOException {
		String codigo = request.getParameter("txtBuscar");
		String nombre = request.getParameter("txtBuscar");
		String ruc = request.getParameter("txtBuscar");
		ArrayList<ClienteDTO> data=null;
		try {
			ClienteServiceImpl service= new ClienteServiceImpl();
			data=service.buscarCliente(codigo, nombre, ruc);
		} catch (Exception e) {
			e.printStackTrace();
		}
		request.setAttribute("DATA", data);
		request.getRequestDispatcher("/BuscarCliente.jsp").forward(request,response);
	}
	
	
	protected void obtenerCliente(HttpServletRequest request,
			HttpServletResponse response) throws ServletException, IOException {
		ClienteDTO cliente =null;
		try {
			ClienteServiceImpl service = new ClienteServiceImpl();
			cliente = service.obtenerClienteDAO(request.getParameter("codigo"));
			
		} catch (Exception e) {
			e.printStackTrace();
		}
		HttpSession session=request.getSession(true);
		session.setAttribute("LISTAR", cliente);
		request.getRequestDispatcher("/MenuRefinCredito.jsp").forward(request, response);
	}
	
	}


